System and method for serving a web site from multiple servers

ABSTRACT

A system for serving web pages to a client in response to a client request specifying a resource. An originating web server having a first address upon which the requested resource resides is coupled to obtain content from content source. The originating web server has a request interface for receiving requests from a network and a response interface for sending responses to the requests. A communication network is coupled to the originating web server. A front-end server is provided having a second address and at least one interface for communicating with a client application and the originating web server. The front-end server is coupled to both obtain the request-specified resources and augment the request specified resources using unspecified resources to generate a response to the client request from the originating web server.

RELATED APPLICATIONS

[0001] The present invention claims priority from U.S. ProvisionalPatent Application No. 60/197,490 entitled CONDUCTOR GATEWAY filed onApr. 17, 2000.

BACKGROUND OF THE INVENTION

[0002] 1. Field of the Invention

[0003] The present invention relates, in general, to network informationaccess and, more particularly, to software, systems and methods forserving web pages in a coordinated fashion from multiple cooperating webservers.

[0004] 2. Relevant Background

[0005] Increasingly, business data processing systems, entertainmentsystems, and personal communications systems are implemented bycomputers across networks that are interconnected by Internetworks(e.g., the Internet). The Internet is rapidly emerging as the preferredsystem for distributing and exchanging data. Data exchanges supportapplications including e-commerce, broadcast and multicast messaging,videoconferencing, gaming, and the like.

[0006] The Internet is a collection of disparate computers and networkscoupled together by a web of interconnections using standardizedcommunications protocols. The Internet is characterized by its vastreach as a result of its wide and increasing availability and easyaccess protocols. Unfortunately, the heterogenous nature of the Internetresults in variable bandwidth and quality of service between points. Thelatency and reliability of data transport is largely determined by thetotal amount of traffic on the Internet and so varies wildly seasonallyand throughout the day. Other factors that affect quality of serviceinclude equipment outages and line degradation that force packets to bererouted, damaged and/or dropped. Also, routing software and hardwarelimitations within the Internet infrastructure may create bandwidthbottlenecks even when the mechanisms are operating withinspecifications.

[0007] Internet transport protocols do not effectively discriminatebetween users. Data packets are passed between routers and switches thatmake up the Internet fabric based on the hardware's instantaneous viewof the best path between source and destination nodes specified in thepacket. Because each packet may take a different path, the latency of apacket cannot be guaranteed and, in practice, varies significantly.Although Internet infrastructure components have been developed thatprovide some level of packet prioritization, these components havelimited deployment. Because of this limited deployment, web siteoperators cannot depend on prioritization services to be availablethroughout the network, and in reality can only depend on a smallportion of the Internet being served by such components. Moreover,components that are available may require modifications to the web siteto operate. Hence, in large part data packets are routed through theInternet without any prioritization based on content.

[0008] Prioritization has not been a major issue with conventionalnetworks such as local area networks (LANs) and wide area networks(WANs) that primarily handle well characterized data traffic between aknown and controlled set of network nodes. In such environments, thenetwork administrators are in control of network traffic and caneffectively police bandwidth consumption, resource availability anddistribution, and other variables that affect quality of service. Incontrast, public networks such as the Internet, involve data trafficthat is out of control of any particular network administrator. However,because of their wide availability, there is an increasing desire toprovide network services using public networks, such as the Internet. Atthe same time, there is an increasing demand for network applicationsthat cannot tolerate high and variable latency. This situation iscomplicated when the application is to be run over the Internet wherelatency and variability in latency are many times greater than in LANand WAN environments.

[0009] A particular need exists in environments that involve multipleusers accessing a network resource such as a web server. Examplesinclude broadcast, multicast and videoconferencing as well as mostelectronic commerce (e-commerce) applications. In these applications, itis important to maintain a reliable connection so that the server andclients remain synchronized and information is not lost.

[0010] In e-commerce applications, it is important to provide asatisfying buyer experience that leads to a purchase transaction. Toprovide this high level of service, a web site operator must ensure thatdata is delivered to the customer in the most usable and efficientfashion. Also, the web site operator must ensure that critical datareceived from the customer is handled with priority.

[0011] Because the few techniques that provide traffic prioritizationare not widely distributed in public networks, the e-commerce site ownerhas had little or no control over the transport mechanisms through theInternet that affect the latency and quality of service. This is akin toa retailer being forced to deal with a customer by shouting across thestreet, never certain how often what was said must be repeated, andknowing that during rush hour communication would be nearly impossible.While efforts are continually being made to increase the capacity andquality of service afforded by the Internet, it is contemplated thatcongestion will always impact the ability to predictably and reliablyoffer a specified level of service. Moreover, the change in the demandfor bandwidth increases at a greater rate than does the change inbandwidth supply, ensuring that congestion will continue to be an issueinto the foreseeable future. A need exists for a system to exchange dataover the Internet that provides a high quality of service even duringperiods of congestion.

[0012] Many e-commerce transactions are abandoned by the user becausesystem performance degradation frustrates the purchaser before thetransaction is consummated. While a data exchange that is abandonedwhile a customer is merely browsing through a catalog may be tolerable,abandonment when the customer is just a few clicks away from a purchaseis highly undesirable. However, existing Internet transport mechanismsand systems do not allow the e-commerce site owner any effective abilityto offer differentiated service levels to, the “just browsing” and the“about-to-buy” customers. In fact, the vagaries of the Internet may leadto the casual browser receiving a higher quality of service while theabout to buy customer becomes frustrated and abandons the transaction.

[0013] Partial solutions have been implemented by systems that cacheInternet content at multiple geographically distributed locations. Intheory, when content can be served from a cache location, it can bedelivered with lower latency than if it were served from a singleoriginating web server. However, the content must be copied from itsorigin to the multiple caches resulting in a tremendous volume of datathat must be duplicated and transported. Moreover, it is difficult tokeep all of the cache copies coherent with the origin. Furthermore, acache lacks the intelligence to provide dynamically generated contentand so is only a partial solution to the many web sites that usedynamically generated web pages.

SUMMARY OF THE INVENTION

[0014] Briefly stated, the present invention involves a system forserving web pages to a client in response to a client request specifyinga resource. An originating web server having a first IP address uponwhich the requested resource resides is coupled to obtain content fromcontent source. The originating web server has a request interface forreceiving requests from a network and a response interface for sendingresponses to the requests. A communication network is coupled to theoriginating web server. A front-end server is provided having a secondIP address, a first interface for communicating with a clientapplication and a second interface for communicating with theoriginating web server. The front-end server is coupled to both obtainthe request-specified resources and augment the request-specifiedresources using unspecified resources to generate a response to theclient request from the originating web server.

[0015] Another aspect of the present invention involves a method forserving web pages to a client in response to a client request specifyinga network resource. An originating web server is provided having a firstIP address upon which the requested resource resides and is coupled toobtain content from content source. The originating web server has arequest interface for receiving requests from a network and a responseinterface for sending responses to the requests. A front-end server isprovided having a second IP address. A client request addressed to theoriginating web server is redirected to the front-end server. Thefront-end server is used to obtain the request-specified resources. Therequest-specified resources are augmented using resources within thefront-end server to generate a response to the client request.

[0016] Still another aspect of the present invention involves web sitedelivery over a communication network. An originating web server coupledto the network executes software to access a first set of content andfunctionality in response to requests from a web client. A front-endserver coupled to the network executes software to access a second setof content and functionality in response to requests from the webclient. A first communication channel within the network supportsrequest and response communication between the web client and theoriginating web server. A second communication channel within thenetwork supports communication between the front-end server and theoriginating web server. Means operating cooperatively between theoriginating web server and the front-end server receives requests forweb pages from the web site from the web client and serves web pages tothe requesting web client in response to the received requests toimplement the web site.

BRIEF DESCRIPTION OF THE DRAWINGS

[0017]FIG. 1 illustrates a general distributed computing environment inwhich the present invention is implemented;

[0018]FIG. 2 shows in block-diagram form significant components of asystem in accordance with the present invention;

[0019]FIG. 3 shows a domain name system used in an implementation of thepresent invention;

[0020]FIG. 4 shows front-end components of FIG. 2 in greater detail;

[0021]FIG. 5 shows back-end components of FIG. 2 in greater detail; and

[0022]FIG. 6 and FIG. 7 show conceptual block diagrams of the system ofFIG. 2 in alternative contexts.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0023] The present invention is illustrated and described in terms of adistributed computing environment such as an enterprise computing systemusing public communication channels such as the Internet. However, animportant feature of the present invention is that it is readily scaledupwardly and downwardly to meet the needs of a particular application.Accordingly, unless specified to the contrary, the present invention isapplicable to significantly larger, more complex network environments aswell as small network environments such as conventional LAN systems.

[0024] The present invention is particularly useful in applicationswhere there is an large amount of data communicated between web serversand web clients (i.e., browser software) or where timeliness (e.g., lowlatency transport) is important. For example, real-time stock quotes,multi-player games, multi-tiered service to ASP (Application ServiceProvider) software distribution models benefit from the improvementsprovided by the present invention. Although the present invention willbe described in terms of particular applications, these examples areprovided to enhance understanding and are not a limitation of theessential teachings of the present invention. For example, the presentinvention is readily extended to wireless environments in which theclient is a wireless phone or personal digital assistant accessingnetwork resources through a wireless access provider (WAP). In suchenvironments, web-based protocols (i.e., HTTP) may not be used at all.Moreover, while the particular embodiments describe a system thattransports web-based traffic using HTTP protocol, it is readily modifiedto support any public or proprietary protocols including file transferprotocol (FTP), network news protocol (NNTP), mail protocols such asSMTP, voice over Internet protocol (VoIP), and the like.

[0025] The current experience of using an overloaded web site that isone of frustration and constant and unexplained errors. In terms ofconventional phone-order shopping, this is akin to a customer phoning afavorite mail order company only to receive a constant busy signal ornon-stop ringing. Under the present invention, web site operators have amechanism to communicate with their customers even if they cannot handletheir web query immediately. The present invention is able to presentthe user with a pre-defined set of web pages which can apologize for thedelay, instruct the user on what to do in case of an emergency,advertise additional options or new product offerings, and provide othercall-center type features including queue management.

[0026] For purposes of this document, a web server is a computer runningserver software coupled to the World Wide Web (i.e., “the web”) thatdelivers or serves web pages. The web server has a unique IP address andaccepts connections in order to service requests by sending backresponses. A web server differs from a proxy server or a gateway serverin that a web server has resident a set of resources (i.e., softwareprograms, data storage capacity, and/or hardware) that enable it toexecute programs to provide an extensible range of functionality such asgenerating web pages, accessing remote network resources, analyzingcontents of packets, reformatting request/response traffic and the likeusing the resident resources. In contrast, a proxy simply forwardsrequest/response traffic on behalf of a client to resources that resideelsewhere, or obtains resources from a local cache if implemented. A webserver in accordance with the present invention may reference externalresources of the same or different type as the services requested by auser, and reformat and augment what is provided by the externalresources in its response to the user. Commercially available web serversoftware includes Microsoft Internet Information Server (IIS), NetscapeNetsite, Apache, among others. Alternatively, a web site may beimplemented with custom or semi-custom software that supports HTTPtraffic.

[0027]FIG. 1 shows an exemplary computing environment 100 in which thepresent invention may be implemented. Environment 100 includes aplurality of local networks such as Ethernet network 102, FDDI network103 and Token Ring network 104. Essentially, a number of computingdevices and groups of devices are interconnected through a network 101.For example, local networks 102, 103 and 104 are each coupled to network101 through routers 109. LANs 102, 103 and 104 may be implemented usingany available topology and may implement one or more server technologiesincluding, for example a UNIX, Novell, or Windows NT networks, and/orpeer-to-peer type networking. Each network will include distributedstorage implemented in each device and typically includes some massstorage device coupled to or managed by a server computer. Network 101comprises, for example, a public network, such as the Internet, oranother network mechanism, such as a fibre channel fabric orconventional WAN technologies.

[0028] Local networks 102, 103 and 104 include one or more networkappliances 107. One or more network appliances 107 may be configured asan application and/or file server. Each local network 102, 103 and 104may include a number of shared devices (not shown) such as printers,file servers, mass storage and the like. Similarly, devices 111 may beshared through network 101 to provide application and file services,directory services, printing, storage, and the like. Routers 109 whichexist throughout network 101 as well as at the edge of network 101 asshown in FIG. 1, provide a physical connection between the variousdevices through network 101. Routers 109 may implement desired accessand security protocols to manage access through network 101.

[0029] Network appliances 107 may also couple to network 101 throughpublic switched telephone network (PSTN) 108 using copper or wirelessconnection technology. In a typical environment, an Internet serviceprovider 106 supports a connection to network 101 as well as PSTN 108connections to network appliances 107.

[0030] Network appliances 107 may be implemented as any kind of networkappliance having sufficient computational function to execute softwareneeded to establish and use a connection to network 101. Networkappliances 107 may comprise workstation and personal computer hardwareexecuting commercial operating systems such as Unix variants, MicrosoftWindows, Macintosh OS, and the like. At the same time, some appliances107 comprise portable or handheld devices such as personal digitalassistants and cell phones executing operating system software such asPalmOS, WindowsCE, and the like. Moreover, the present invention isreadily extended to network devices such as office equipment, vehicles,and personal communicators that occasionally connect through network101.

[0031] Each of the devices shown in FIG. 1 may include memory, massstorage, and a degree of data processing capability sufficient to managetheir connection to network 101. The computer program devices inaccordance with the present invention are implemented in the memory ofthe various devices shown in FIG. 1 and enabled by the data processingcapability of the devices shown in FIG. 1. In addition to local memoryand storage associated with each device, it is often desirable toprovide one or more locations of shared storage such as disk farm (notshown) that provides mass storage capacity beyond what an individualdevice can efficiently use and manage. Selected components of thepresent invention may be stored in or implemented in shared massstorage.

[0032] The present invention operates in a manner akin to a privatenetwork 200 implemented within the Internet infrastructure. Privatenetwork 200 expedites and prioritizes communications between a client205 and a web site 210. In the specific examples herein client 205comprises a network-enabled graphical user interface such as a webbrowser. However, the present invention is readily extended to clientsoftware other than conventional web browser software. Any clientapplication that can access a standard or proprietary user levelprotocol for network access is a suitable equivalent. Examples includeclient applications for file transfer protocol (FTP) services, voiceover Internet protocol (VOIP) services, network news protocol (NNTP)services, multi-purpose Internet mail extensions (MIME) services, postoffice protocol (POP) services, simple mail transfer protocol (SMTP)services, as well as Telnet services. In addition to network protocols,the client application may access a network application such as adatabase management system (DBMS) in which case the client applicationgenerates query language (e.g., structured query language or “SQL”)messages. In wireless appliances, a client application may communicatevia wireless application protocol (WAP) or the like.

[0033] For convenience, the term “web site” is used interchangeably with“web server” in the description herein, although it should be understoodthat a web site comprises a collection of content, programs andprocesses implemented on one or more web servers. A web site is owned bythe content provider such as an e-commerce vendor, whereas a web serverrefers to set of programs running on one or more machines coupled to anInternet node. The web site 210 may be hosted on the site owner's ownweb server, or hosted on a web server owned by a third party. A webhosting center is an entity that implements one or more web sites on oneor more web servers using shared hardware and software resources acrossthe multiple web sites. In a typical web infrastructure, there are manyweb browsers, each of which has a TCP connection to the web server inwhich a particular web site is implemented. The present invention addstwo components to the infrastructure: a front-end 201 and back-end 203.Front-end 201 and back-end 203 are coupled by a managed datacommunication link 202 that forms, in essence, a private network.

[0034] Front-end mechanism 201 serves as an access point for client-sidecommunications. Front-end 201 implements a gateway that functions as aproxy for the web server(s) implementing web site 210 (i.e., from theperspective of client 205, front-end 201 appears to be the web site210). Front-end 201 comprises, for example, a computer that sits “close”to clients 205. By “close”, it is meant that the average latencyassociated with a connection between a client 205 and a front-end 201 isless than the average latency associated with a connection between aclient 205 and a web site 210. Desirably, front-end computers have asfast a connection as possible to the clients 205. For example, thefastest available connection may be implemented in point of presence(POP) of an Internet service provider (ISP) 106 used by a particularclient 205. However, the placement of the front-ends 201 can limit thenumber of browsers that can use them. Because of this, in someapplications it is more practical to place one front-end computer insuch a way that several POPs can connect to it. Greater distance betweenfront-end 201 and clients 205 may be desirable in some applications asthis distance will allow for selection amongst a greater numberfront-ends 201 and thereby provide significantly different routes to aparticular back-end 203. This may offer benefits when particular routesand/or front-ends become congested or otherwise unavailable.

[0035] Transport mechanism 202 is implemented by cooperative actions ofthe front-end 201 and back-end 203. Back-end 203 processes and directsdata communication to and from web site 210. Transport mechanism 202communicates data packets using a proprietary protocol over the publicInternet infrastructure in the particular example. Hence, the presentinvention does not require heavy infrastructure investments andautomatically benefits from improvements implemented in the generalpurpose network 101. Unlike the general purpose Internet, front-end 201and back-end 203 are programmably assigned to serve accesses to aparticular web site 210 at any given time.

[0036] It is contemplated that any number of front-end and back-endmechanisms may be implemented cooperatively to support the desired levelof service required by the web site owner. The present inventionimplements a many-to-many mapping of front-ends to back-ends. Becausethe front-end to back-end mappings can by dynamically changed, a fixedhardware infrastructure can be logically reconfigured to map more orfewer front-ends to more or fewer back-ends and web sites or servers asneeded.

[0037] Front-end 201 together with back-end 203 function to reducetraffic across the TMP link 202 and to improve response time forselected browsers. Traffic across the TMP link 202 is reduced bycompressing data and serving browser requests from cache for fastretrieval. Also, the blending of request datagrams results in fewerrequest:acknowledge pairs across the TMP link 202 as compared to thenumber required to send the packets individually between front-end 201and back-end 203. This action reduces the overhead associated withtransporting a given amount of data, although conventionalrequest:acknowledge traffic is still performed on the links coupling thefront-end 201 to client 205 and backend 203 to a web server. Moreover,resend traffic is significantly reduced further reducing the traffic.Response time is further improved for select privileged users and forspecially marked resources by determining the priority for each HTTPtransmission.

[0038] In one embodiment, front-end 201 and back-end 203 are closelycoupled to the Internet backbone. This means they have high bandwidthconnections, can expect fewer hops, and have more predictable packettransit time than could be expected from a general-purpose connection.Although it is preferable to have low latency connections betweenfront-ends 201 and back-ends 203, a particular strength of the presentinvention is its ability to deal with latency by enabling efficienttransport and traffic prioritization. Hence, in other embodimentsfront-end 201 and/or back-end 203 may be located farther from theInternet backbone and closer to clients 205 and/or web servers 210. Suchan implementation reduces the number of hops required to reach afront-end 201 while increasing the number of hops within the TMP link202 thereby yielding control over more of the transport path to themanagement mechanisms of the present invention.

[0039] Clients 205 no longer conduct all data transactions directly withthe web server 210. Instead, clients 205 conduct some and preferably amajority of transactions with front-ends 201, which simulate thefunctions of web server 210. Client data is then sent, using TMP link202, to the back-end 203 and then to the web server 210. Runningmultiple clients 205 over one large connection provides severaladvantages:

[0040] Since all client data is mixed, each client can be assigned apriority. Higher priority clients, or clients requesting higher prioritydata, can be given preferential access to network resources so theyreceive access to the channel sooner while ensuring low-priority clientsreceive sufficient service to meet their needs.

[0041] The large connection between a front-end 201 and back-end 203 canbe permanently maintained, shortening the many TCP/IP connectionsequences normally required for many clients connecting anddisconnecting.

[0042] Using a proprietary protocol allows the use of more effectivetechniques to improve data throughput and makes better use of existingbandwidth during periods when the network is congested.

[0043] A particular advantage of the architecture shown in FIG. 2 isthat it is readily scaled. Any number of client machines 205 may besupported. In a similar manner, a web site owner may choose to implementa site using multiple web servers 210 that are co-located or distributedthroughout network 101. To avoid congestion, additional front-ends 201may be implemented or assigned to particular web sites. Each front-end201 is dynamically re-configurable by updating address parameters toserve particular web sites. Client traffic is dynamically directed toavailable front-ends 201 to provide load balancing. Hence, when qualityof service drops because of a large number of client accesses, anadditional front-end 201 can be assigned to the web site and subsequentclient requests directed to the newly assigned front-end 201 todistribute traffic across a broader base.

[0044] In the particular examples, this is implemented by a front-endmanager component 207 that communicates with multiple front-ends 201 toprovide administrative and configuration information to front-ends 201.Each front-end 201 includes data structures for storing theconfiguration information, including information identifying the IPaddresses of web servers 210 to which they are currently assigned. Otheradministrative and configuration information stored in front-end 201 mayinclude information for prioritizing data from and to particularclients, quality of service information, and the like.

[0045] Similarly, additional back-ends 203 can be assigned to a web siteto handle increased traffic. Back-end manager component 209 couples toone or more back-ends 203 to provide centralized administration andconfiguration service. Back-ends 203 include data structures to holdcurrent configuration state, quality of service information and thelike. In the particular examples front-end manager 207 and back-endmanager 209 serve multiple web sites 210 and so are able to manipulatethe number of front-ends and back-ends assigned to each web site 210 byupdating this configuration information. When the congestion for thesite subsides, the front-end 201 and back-end 203 can be reassigned toother, busier web sites. These and similar modifications are equivalentto the specific examples illustrated herein.

[0046] In the case of web-based environments, front-end 201 isimplemented using custom or off-the-shelf web server software. Front-end201 is readily extended to support other, non-web-based protocols,however, and may support multiple protocols for varieties of clienttraffic. Front-end 201 processes the data traffic it receives,regardless of the protocol of that traffic, to a form suitable fortransport by TMP 202 to a back-end 203. Hence, most of the functionalityimplemented by front-end 201 is independent of the protocol or format ofthe data received from a client 205. Hence, although the discussion ofthe exemplary embodiments herein relates primarily to front-end 201implemented as a web server, it should be noted that, unless specifiedto the contrary, web-based traffic management and protocols are merelyexamples and not a limitation of the present invention.

[0047] As shown in FIG. 2, in accordance with the present invention aweb site is implemented using an originating web server 210 operatingcooperatively with the web server of front-end 201. More generally, anynetwork service (e.g., FTP, VOIP, NNTP, MIME, SMTP, Telnet, DBMS) can beimplemented using a combination of an originating server workingcooperatively with a front-end 201 configured to provide a suitableinterface (e.g., FTP , VOIP, NNTP, MIME, SMTP, Telnet, DBMS, WAP) forthe desired service. In contrast to a simple front-end cache or proxysoftware, implementing a server in front-end 201 enables portions of theweb site (or other network service) to actually be implemented in andserved from both locations. The actual web pages or service beingdelivered comprises a composite of the portions generated at eachserver. Significantly, however, the web server in front-end 201 is closeto the browser in a client 205 whereas the originating web server isclose to all resources available at the web hosting center at which website 210 is implemented. In essence the web site 210 is implemented by atiered set of web servers comprising a front-end server 201 standing infront of an originating web server.

[0048] This difference enables the web site or other network service tobe implemented so as to take advantage of the unique topologicalposition each entity has with respect to the client 205. By way of aparticular example, assume an environment in which the front-end server201 is located at the location of an ISP used by a particular set ofclients 205. In such an environment, clients 205 can access thefront-end server 205 without actually traversing the network 101.

[0049] In order for a client 205 to obtain service from a front-end 201,it must first be directed to a front-end 201 that can provide thedesired service. Preferably, client 205 does not need to be aware of thelocation of front-end 201, and initiates all transactions as if it werecontacting the originating server 210. FIG. 3 illustrates a domain nameserver (DNS) redirection mechanism that illustrates how a client 205 isconnected to a front-end 201. The DNS systems is defined in a variety ofInternet Engineering Task Force (IETF) documents such as RFC0883, RFC1034 and RFC 1035 which are incorporated by reference herein. In atypical environment, a client 205 executes a browser 301, TCP/IP stack303, and a resolver 305. For reasons of performance and packaging,browser 301, TCP/IP stack 303 and resolver 305 are often groupedtogether as routines within a single software product.

[0050] Browser 301 functions as a graphical user interface to implementuser input/output (I/O) through monitor 311 and associated keyboard,mouse, or other user input device (not shown). Browser 301 is usuallyused as an interface for web-based applications, but may also be used asan interface for other applications such as email and network news, aswell as special-purpose applications such as database access, telephony,and the like. Alternatively, a special-purpose user interface may besubstituted for the more general purpose browser 301 to handle aparticular application.

[0051] TCP/IP stack 303 communicates with browser 301 to convert databetween formats suitable for browser 301 and IP format suitable forInternet traffic. TCP/IP stack also implements a TCP protocol thatmanages transmission of packets between client 205 and an Internetservice provider (ISP) or equivalent access point. Internet protocol(IP) requires that each data packet include, among other things, an IPaddress identifying a destination node. In current implementations theIP address comprises a 32-bit value that identifies a particularInternet node. Non-IP networks have similar node addressing mechanisms.To provide a more user-friendly addressing system, the Internetimplements a system of domain name servers that map alpha-numeric domainnames to specific IP addresses. This system enables a name space that ismore consistent reference between nodes on the Internet and avoids theneed for users to know network identifiers, addresses, routes andsimilar information in order to make a connection.

[0052] The domain name service is implemented as a distributed databasemanaged by domain name servers (DNSs) 307 such as DNS_A, DNS_B and DNS_Cshown in FIG. 3. Each DNS relies on <domain name:IP> address mappingdata stored in master files scattered through the hosts that use thedomain system. These master files are updated by local systemadministrators. Master files typically comprise text files that are readby a local name server, and hence become available through the nameservers 307 to users of the domain system.

[0053] The user programs (e.g., clients 205) access name servers throughstandard programs such as resolver 305. Resolver 305 includes an addressof a DNS 307 that serves as a primary name server. When presented with areference to a domain name (e.g., http://www.circadence.com), resolver305 sends a request to the primary DNS (e.g., DNS_A in FIG. 3). Theprimary DNS 307 returns either the IP address mapped to that domainname, a reference to another DNS 307 which has the mapping information(e.g., DNS_B in FIG. 3), or a partial IP address together with areference to another DNS that has more IP address information. Anynumber of DNS-to-DNS references may be required to completely determinethe IP address mapping.

[0054] In this manner, the resolver 305 becomes aware of the IP addressmapping which is supplied to TCP/IP component 303. Client 205 may cachethe IP address mapping for future use. TCP/IP component 303 uses themapping to supply the correct IP address in packets directed to aparticular domain name so that reference to the DNS system need onlyoccur once.

[0055] In accordance with the present invention, at least one DNS server307 is owned and controlled by system components of the presentinvention. When a user accesses a network resource (e.g., a web site),browser 301 contacts the public DNS system to resolve the requesteddomain name into its related IP address in a conventional manner. In afirst embodiment, the public DNS performs a conventional DNS resolutiondirecting the browser to an originating server 210 and server 210performs a redirection of the browser to the system owned DNS server(i.e., DNC C in FIG. 3). In a second embodiment, domain:address mappingswithin the DNS system are modified such that resolution of the of theoriginating server's domain automatically return the address of thesystemowned DNS server (DNS_C). Once a browser is redirected to thesystem-owned DNS server, it begins a process of further redirecting thebrowser 301 to the best available front-end 201.

[0056] Unlike a conventional DNS server, however, the system-owned DNS_Cin FIG. 3 receives domain:address mapping information from a redirectorcomponent 309. Redirector 309 is in communication with front-end manager207 and back-end manager 209 to obtain information on current front-endand back-end assignments to a particular server 210. A conventional DNSis intended to be updated infrequently by reference to its associatedmaster file. In contrast, the master file associated with DNS C isdynamically updated by redirector 309 to reflect current assignment offront-end 201 and back-end 203. In operation, a reference to web server210 (e.g., http://www.circadence.com) may result in an IP addressreturned from DNS_C that points to any selected front-end 201 that iscurrently assigned to web site 210. Likewise, web site 210 may identifya currently assigned back-end 203 by direct or indirect reference to DNSC.

[0057] Front-end 201 typically receives information directly fromfront-end manager 207 about the address of currently assigned back-ends203. Similarly, back-end 203 is aware of the address of a front-end 201associated with each data packet. Hence, reference to the domain systemis not required to map a front-end 201 to its appropriate backend 203.

[0058]FIG. 4 illustrates principle functional components of an exemplaryfront-end 201 in greater detail. Primary functions of the front-end 201include serving as a proxy for web server 210 from the perspective ofclient 205, and translating transmission control protocol (TCP) packetsfrom client 205 into transport morphing protocol™ (TMP™) packets used inthe system in accordance with the present invention. Transport morphingprotocol and TMP are trademarks or registered trademarks of Circadencecorporation in the United States and other countries. It is contemplatedthat the various functions described in reference to the specificexamples may be implemented using a variety of data structures andprograms operating at any location in a distributed network. Forexample, a front-end 201 may be operated on a network appliance 107 orserver within a particular network 102, 103, or 104 shown in FIG. 1. Thepresent invention is readily adapted to any application where multipleclients are coupling to a centralized resource. Moreover, othertransport protocols may be used, including proprietary transportprotocols.

[0059] TCP component 401 includes devices for implementing physicalconnection layer and Internet protocol (IP) layer functionality. CurrentIP standards are described in IETF documents RFC0791, RFC0950, RFC0919,RFC0922, RFC792, RFC1112 that are incorporated by reference herein. Forease of description and understanding, these mechanisms are notdescribed in great detail herein. Where protocols other than TCP/IP areused to couple to a client 205, TCP component 401 is replaced oraugmented with an appropriate network protocol process.

[0060] TCP component 401 communicates TCP packets with one or moreclients 205. Received packets are coupled to parser 402 where theInternet protocol (or equivalent) information is extracted. TCP isdescribed in IETF RFC0793 which is incorporated herein by reference.Each TCP packet includes header information that indicates addressingand control variables, and a payload portion that holds the user-leveldata being transported by the TCP packet. The user-level data in thepayload portion typically comprises a user-level network protocoldatagram.

[0061] Parser 402 analyzes the payload portion of the TCP packet. In theexamples herein, HTTP is employed as the user-level protocol because ofits widespread use and the advantage that currently available browsersoftware is able to readily use the HTTP protocol. In this case, parser402 comprises an HTTP parser. More generally, parser 402 can beimplemented as any parser-type logic implemented in hardware or softwarefor interpreting the contents of the payload portion. Parser 402 mayimplement file transfer protocol (FTP), mail protocols such as simplemail transport protocol (SMTP), structured query language (SQL) and thelike. Any user-level protocol, including proprietary protocols, may beimplemented within the present invention using appropriate modificationof parser 402.

[0062] To improve performance, front-end 201 optionally includes acaching mechanism 403. Cache 403 may be implemented as a passive cachethat stores frequently and/or recently accessed web pages or as anactive cache that stores network resources that are anticipated to beaccessed. In non-web applications, cache 403 may be used to store anyform of data representing database contents, files, program code, andother information. Upon receipt of a TCP packet, HTTP parser 402determines if the packet is making a request for data within cache 403.If the request can be satisfied from cache 403, the data is supplieddirectly without reference to web server 210 (i.e., a cache hit). Cache403 implements any of a range of management functions for maintainingfresh content. For example, cache 403 may invalidate portions of thecached content after an expiration period specified with the cached dataor by web sever 210. Also, cache 403 may proactively update the cachecontents even before a request is received for particularly important orfrequently used data from web server 210. Cache 403 evicts informationusing any desired algorithm such as least recently used, leastfrequently used, first in/first out, or random eviction. When therequested data is not within cache 403, a request is processed to webserver 210, and the returned data may be stored in cache 403.

[0063] Several types of packets will cause parser 404 to forward arequest towards web server 210. For example, a request for data that isnot within cache 403 (or if optional cache 403 is not implemented) willrequire a reference to web server 210. Some packets will comprise datathat must be supplied to web server 210 (e.g., customer creditinformation, form data and the like). In these instances, HTTP parser402 couples to data blender 404.

[0064] Optionally, front-end 201 implements security processes,compression processes, encryption processes and the like to conditionthe received data for improved transport performance and/or provideadditional functionality. These processes may be implemented within anyof the functional components (e.g., data blender 404) or implemented asseparate functional components within front-end 201. Also, parser 402may implement a prioritization program to identify packets that shouldbe given higher priority service. A prioritization program requires onlythat parser 402 include a data structure associating particular clients205, particular TCP packet types, contents and the like with aprioritization value. Based on the prioritization value, parser 402 mayselectively implement such features as caching, encryption, security,compression and the like to improve performance and/or functionality.The prioritization value is provided by the owners of web site 210, forexample, and may be dynamically altered, statically set, or updated fromtime to time to meet the needs of a particular application.

[0065] Blender 404 slices and/or coalesces the data portions of thereceived packets into a more desirable “TMP units” that are sized fortransport through the TMP mechanism 202. The data portion of TCP packetsmay range in size depending on client 205 and any intervening linkscoupling client 205 to TCP component 401. Moreover, where compression isapplied, the compressed data will vary in size depending on thecompressibility of the data. Data blender 404 receives information fromfront-end manager 207 that enables selection of a preferable TMP packetsize. Alternatively, a fixed TMP packet size can be set that yieldsdesirable performance across TMP mechanism 202. Data blender 404 alsomarks the TMP units so that they can be re-assembled at the receivingend.

[0066] Data blender 404 also serves as a buffer for storing packets fromall clients 205 that are associated with front-end 201. Blender 404mixes data packets coming into front-end 201 into a cohesive stream ofTMP packets sent to back-end 203 over TMP link 202. In creating a TMPpacket, blender 404 is able to pick and choose amongst the availabledata packets so as to prioritize some data packets over others.

[0067] In an exemplary implementation, a “TMP connection” comprises aplurality of “TCP connection buffers”, logically arranged in multiple“rings”. Each TCP socket maintained between the front-end 201 and aclient 205 corresponds to a TCP connection buffer. When a TCP connectionbuffer is created, it is assigned a priority. For purposes of thepresent invention, any algorithm or criteria may be used to assign apriority. Each priority ring is associated with a number of TCPconnection buffers having similar priority. In a specific example, fivepriority levels are defined corresponding to five priority rings. EachTMP ring is characterized by the number of connection buffers it holds(nSockets), the number of connection buffers it holds that have datawaiting to be sent (nReady) and the total number of bytes of data in allthe connection buffers that it holds (nBytes).

[0068] When composing TMP data packets, the blender goes into a loopcomprising the steps:

[0069] 1) Determine the number of bytes available to be sent from eachring (nBytes), and the number of TCP connections that are ready to send(nReady)

[0070] 2) Determine how many bytes should be sent from each ring. Thisis based on a weight parameter for each priority. The weight can bethought of as the number of bytes that should be sent at each prioritythis time through the loop.

[0071] 3) The nSend value computed in the previous step reflects theweighted proportion that each ring will have in a blended TMP packet,but the values of nSend do not reflect how many bytes need to beselected to actually empty most or all of the data waiting to be sent asingle round. To do this, the nsend value is normalized to the ringhaving the most data waiting (e.g., nbytes=nSendNorm). This involves acalculation of a factor: S=nBytes/(Weight*nReady) for the ring with thegreatest nReady. Then, for each ring, calculate nReady*S*Weight to getthe normalized value (nSendNorm) for each priority ring.

[0072] 4) Send sub-packets from the different rings. This is done bytaking a sub-packet from the highest priority ring and adding it to aTMP packet, then adding a sub-packet from each of the top two queues,then the top three, and so on.

[0073] 5) Within each ring, sub-packets are added round robin. When asub-packet is added from a TCP connection buffer the ring is rotated sothe next sub-packet the ring adds will come from a different TCPconnection buffer. Each sub-packet can be up to 512 bytes in aparticular example. If the connection buffer has less than 512 byteswaiting, the data available is added to the TMP packet.

[0074] 6) When a full TMP packet (roughly 1.5 kB in a particularexample)is built, it is sent. This can have three or more sub packets,depending on their size. The TMP packet will also be sent when there isno more data ready.

[0075] TMP mechanism 405 implements the TMP protocol in accordance withthe present invention. TMP is a TCP-like protocol adapted to improveperformance for multiple channels operating over a single connection.Front-end TMP mechanism 405 and a corresponding back-end TMP mechanism505 shown in FIG. 5 are computer processes that implement the end pointsof TMP link 202. The TMP mechanism in accordance with the presentinvention creates and maintains a stable connection between twoprocesses for high-speed, reliable, adaptable communication.

[0076] TMP is not merely a substitute for the standard TCP environment.TMP is designed to perform particularly well in heterogeneousenvironments such as the Internet. TMP connections are made less oftenthan TCP connections. Once a TMP connection is made, it remains upunless there is some kind of direct intervention by an administrator orthere is some form of connection breaking network error. This reducesoverhead associated with setting up, maintaining and tearing downconnections normally associated with TCP.

[0077] Another feature of TMP is its ability to channel numerous TCPconnections through a single TMP connection 202. The environment inwhich TMP resides allows multiple TCP connections to occur at one end ofthe system. These TCP connections are then mapped into a single TMPconnection. The TMP connection is then broken down at the other end ofthe TMP connection 202 in order to traffic the TCP connections to theirappropriate destinations. TMP includes mechanisms to ensure that eachTMP connection gets enough of the available bandwidth to accommodate themultiple TCP connections that it is carrying.

[0078] Another advantage of TMP as compared to traditional protocols isthe amount of information about the quality of the connection that a TMPconnection conveys from one end to the other of a TMP connection 202. Asoften happens in a network environment, each end has a great deal ofinformation about the characteristics of the connection in onedirection, but not the other. By knowing about the connection as awhole, TMP can better take advantage of the available bandwidth.

[0079] In contrast with conventional TCP mechanisms, the behaviorimplemented by TMP mechanism 405 is constantly changing. Because TMPobtains bandwidth to host a variable number of TCP connections andbecause TMP is responsive information about the variable status of thenetwork, the behavior of TMP is preferably continuously variable. One ofthe primary functions of TMP is being able to act as a conduit formultiple TCP connections. As such, a single TMP connection cannot behavein the same manner as a single TCP connection. For example, imagine thata TMP connection is carrying 100 TCP connections. At this time, it losesone packet (from any one of the TCP connections) and quickly cuts itswindow size in half (as specified for TCP). This is a performancereduction on 100 connections instead of just on the one that lost thepacket.

[0080] Each TCP connection that is passed through the TMP connectionmust get a fair share of the bandwidth, and should not be easilysqueezed out. To allow this to happen, every TMP becomes more aggressivein claiming bandwidth as it accelerates. Like TCP, the bandwidthavailable to a particular TMP connection is measured by its window size(i.e., the number of outstanding TCP packets that have not yet beenacknowledged) Bandwidth is increased by increasing the window size, andrelinquished by reducing the window size. Up to protocol specifiedlimits, each time a packet is successfully delivered and acknowledged,the window size is increased until the window size reaches a protocolspecified maximum. When a packet is dropped (e.g., no acknowledgereceived or a resend packet response is received), the bandwidth isdecreased by backing off the window size. TMP also ensures that itbecomes more and more resistant to backing off (as compared to TCP) witheach new TCP connection that it hosts. A TMP should not go down to awindow size of less than the number of TCP connections that it ishosting.

[0081] In a particular implementation, every time a TCP connection isadded to (or removed from) what is being passed through the TMPconnection, the TMP connection behavior is altered. It is thisadaptation that ensures successful connections using TMP. Through theuse of the adaptive algorithms discussed above, TMP is able to adapt theamount of bandwidth that it uses. When a new TCP connection is added tothe TMP connection, the TMP connection becomes more aggressive. When aTCP connection is removed from the TMP connection, the TMP connectionbecomes less aggressive.

[0082] TMP connection 202 provides improved performance in itsenvironment as compared to conventional TCP channels, but it isrecognized that TMP connection 202 resides on the open, shared Internetin the preferred implementations. Hence, TMP must live together withmany protocols and share the connection efficiently in order to allowthe other transport mechanisms fair access to the shared communicationbandwidth. Since TMP takes only the amount of bandwidth that isappropriate for the number of TCP connections that it is hosting (andsince it monitors the connection and controls the number of packets thatit puts on the line), TMP will exist cooperatively with TCP traffic.Furthermore, since TMP does a better job at connection monitoring thanTCP and TMP is better suited to throughput and bandwidth management thanTCP.

[0083] Also shown in FIG. 4 are data filter component 406 and HTTPreassemble component 407 that process incoming (with respect to client205) data. TMP mechanism 405 receives TMP packets from TMP connection202 and extracts the TMP data units. Using the appended sequencinginformation, the extracted data units are reassembled into HTTP datapacket information by HTTP reassembler 407. Data filter component 406may also implement data decompression where appropriate, decryption, andhandle caching when the returning data is of a cacheable type.

[0084]FIG. 5 illustrates principle functional components of an exemplaryback-end 203 in greater detail. Primary functions of the back-end 203include translating transmission control protocol (TCP) packets from webserver 210 into TMP packets as well as translating TMP packets receivedfrom a front-end 201 into the one or more corresponding TCP packets tobe send to server 210.

[0085] TMP unit 505 receives TMP packets from TMP connection 202 andpasses them to HTTP reassemble unit 507 where they are reassembled intothe corresponding TCP packets. Data filter 506 may implement otherfunctionality such as decompression, decryption, and the like to meetthe needs of a particular application. The reassembled data is forwardedto TCP component 501 for communication with web server 210.

[0086] TCP data generated by the web server process are transmitted toTCP component 501 and forwarded to HTTP parse mechanism 502. Parser 502operates in a manner analogous to parser 402 shown in FIG. 4 to extractthe data portion from the received TCP packets, perform optionalcompression, encryption and the like, and forward those packets to datablender 504. Data blender 504 operates in a manner akin to data blender404 shown in FIG. 3 to buffer and prioritize packets in a manner that isefficient for TMP transfer. Priority information is received by, forexample, back-end manager 209 based upon criteria established by the website owner. TMP data is streamed into TMP unit 505 for communication onTMP connection 202.

[0087] To improve performance, back-end 203 optionally includes acaching mechanism 503. Cache 503 may be implemented as a passive cachethat stores frequently and/or recently accessed resources from server210 or as an active cache that stores network resources that areanticipated to be accessed. In non-web applications, cache 503 may beused to store any form of data representing database contents, files,program code, and other information. Upon receipt of a TCP packet, HTTPreassemble unit 507 determines if the packet is making a request fordata within cache 503. If the request can be satisfied from cache 503,the data is supplied directly without reference to web server 210. Cache503 implements any of a range of management functions for maintainingfresh content. For example, cache 503 may invalidate portions of thecached content after an expiration period specified with the cached dataor by web sever 210. Also, cache 503 may proactively update the cachecontents even before a request is received for particularly important orfrequently used data from web server 210. Cache 503 evicts informationusing any desired algorithm such as least recently used, leastfrequently used, first in/first out, or random eviction. When therequested data is not within cache 503, a reassembled HTTP request isprocessed to web server 210, and the returned data may be stored incache 503.

[0088] Returning again to FIG. 2, in a particular example front-endserver 201 comprises a web server or hosting center located in a firstgeographic region whereas web site 210 comprises a web server or hostingcenter located in a second geographic region. The Internet is organizedas a collection of subnets often arranged around roughly geographicboundaries. Latency and quality of service within a subnet is oftenbetter than between subnets. A client 205 located in the firstgeographic region principally connects to front-end 201, butoccasionally requests content that is available only on web site 210. Inconventional implementations, a web server 201 redirects client 205 toweb server 210.

[0089] In accordance with the present invention, front-end 201 retainscontrol of the connection with client 205 and selectively obtainscontent from web server 210 or serves substitute content. Front-endserver 201 serves as a first tier web server which is backed by a secondtier web server 210. This action protects client 205 from the vagariesof the subnet-to-subnet latency and quality of service and avoidsundesirable handoff of a client 205 to a logically distant web server210.

[0090]FIG. 6 illustrates a conceptual block diagram of an exemplaryimplementation of the system shown in FIG. 2 in an alternative context.In the example of FIG. 6, front-end 201 is implemented as a front-endserver 601 operating at, for example, an ISP 602. ISP 602 supportsmodem, digital subscriber line (DSL), ISDN, leased line, or othercommunication ports for communicating with one or more clients 605. ISP602 serves as a bridge to couple client connections to IP connectionswith network 101. ISP 602 may be considered to be outside of network 101in that quality of service between client 605 and ISP 602 is notdependent on congestion or equipment failure or other factors affectingquality of service within network 101.

[0091] In operation, client 605 generates an HTTP request specifying website 610 in the URL. In the manner described hereinbefore, the clientrequest is redirected to front-end 601. Once the redirection iscompleted, front-end 601 serves web pages embedded in HTTP responsepackets using both content obtained from web site 610 as well as contentobtained from front-end content database 603. In this manner, front-endserver 601 dynamically controls the source of the delivered content. Theweb page(s) served to client 605 comprise a composite of multiplesources from multiple independent web servers.

[0092] Significantly, the content served from content database 603 maydiffer from the content that would have otherwise been served by website 610. For example, if web site 610 returns an HTTP 404 “page notfound” error page, front-end site 601 may supply a more informative orinstructive web page derived from content database 603. Alternatively,front-end site 601 may detect periods of low quality of service or slowresponse and provide substitute content from content database 603 orelsewhere. In a particular example, web site 610 publishes a load indexthat can be read by front-end 601 and used to generate a wait pageintended to occupy a user of client 605 until content can be obtaineddirectly from web site 610.

[0093] In essence this substitute content implements a “soft landing”feature that provides improved behavior in the event of web serveroutages, slowdowns, and/or traffic congestion. The soft landing behaviormay include serving substitute content that indicates an estimated timefor server availability, demonstration of product features, or providesa coupon for discounts on future goods and services through the site.The soft landing behavior may also include a manual or automaticredirection to a mirror server. The actual soft landing behavior mightchange depending on priority value associated with a particular user.For example, a high priority user might be given prioritized access tothe origin web site while the low priority user is served substitutecontent. When a coupon is served as a soft landing, the coupon value orterms can be varied to discriminate between high and low priority users.

[0094] In a particular example, the owner of web site 610 establishesrules for how front-end server 601 handles various conditions. Theserules are stored in front-end server 601. Hence, the owner of web site610 is not losing control over how web site 610 is presented, butinstead is gaining control over how presentation occurs during periodswhere network 101 is unavailable or provides unacceptable quality ofservice. By placing a web server in front of the origin web site 610,overall user experience as well as efficacy of the web site 610 for thesite owner are improved.

[0095] Content database 603 may be implemented in whole or part by cache403 shown in FIG. 4. It is contemplated that a back-end server 203 maybe used to provide the alternate content serving features described inreference to FIG. 6 in which case back-end cache 503 provides a contentdatabase 603. Moreover, a combination of front-end server 201 andback-end server 203 together can be used. In each alternative, cachingcan be passive or active. Passive caching will cache network resourcesas they pass through the server. Active caching can be implemented bycausing the server to examine the network resources as it passes throughthe server to identify caching instructions encoded within the networkresource itself. These instructions specify whether the resource iscacheable, expiration times, and the like. These instructions may beprovided by the web server 210 itself, or may be provided to a front-end201 by a back-end 203 according to rules specified by the site owner orother rule making entity.

[0096]FIG. 7 shows yet another alternative in which the system of thepresent invention may be implemented. By way of contrast, FIG. 2illustrates an implementation using coordinated actions of a front-endserver 201, a back-end server 203, and one or more web servers 210. Incontrast, FIG. 6 illustrates a single intermediary server 601 thatcooperating with a web server 610. FIG. 7, however, illustrates amulti-tiered web server approach in which any number of intermediaryservers 701 act cooperatively and dynamically to serve a web site 710 ina distributed fashion. A browser client 705 couples to one, or more thanone web server 701 to assert a request for content. The web server 701may serve content directly, or may obtain content from another webserver 701, or from the web site 710 as in the embodiment shown in FIG.6. Each intermediary web server 701 exercises an option to serve contentdirectly from its own resources, or obtain the content from anotherresource such as a web server 701.

[0097] The implementation shown in FIG. 7 will benefit from managementfunctions that inform each intermediary web server 701 about the contentand/or resources available on each other web server 701. This managementinformation enables requests to be directed to web servers 701 that arelikely to be able to answer the request. Routing through multiple tiersof web servers 701 will eventually increase the latency in generating aresponse as compared to a direct reference to web site 710. However,when web servers 701 are coupled by enhanced channels such as the TCPchannels described hereinbefore, it is contemplated that a request mayinvolve multiple tiers of web servers 701 and still be served faster,more reliably than possible through direct reference to web site 710.From another perspective, low priority requests may be preferably beserved from a multiple-tier service involving several intermediaryservers 701 such that higher priority requests may be served using fewertiers or by direct reference to web site 710. Hence, the presentinvention enables a means for regulating the quality of service providedto a given client request by regulating the number of intermediaryservers involved in responding to the request.

[0098] Although the invention has been described and illustrated with acertain degree of particularity, it is understood that the presentdisclosure has been made only by way of example, and that numerouschanges in the combination and arrangement of parts can be resorted toby those skilled in the art without departing from the spirit and scopeof the invention, as hereinafter claimed. For example, while devicessupporting HTTP data traffic are used in the examples, the HTTP devicesmay be replaced or augmented to support other public and proprietaryprotocols and languages including FTP, NNTP, SMTP, SQL and the like. Insuch implementations the front-end 201 and/or back end 203 are modifiedto implement the desired protocol. Moreover, front-end 201 and back-end203 may support different protocols and languages such that thefront-end 201 supports, for example, HTTP traffic with a client and theback-end supports a DBMS protocol such as SQL. Such implementations notonly provide the advantages of the present invention, but also enable aclient to access a rich set of network resources with minimal clientsoftware.

We claim:
 1. A system for serving web pages to a client in response to aclient request specifying a resource, the system comprising: a first webserver having a first address, the first web server having a requestinterface for receiving requests and a response interface for sendingresponses to the requests; a communication network coupled to the firstweb server; a second web server having a second address and implementinginterface processes for communicating with a client application and forcommunicating with the first web server, the second web server coupledto both obtain at least some of the request-specified resources from thefirst web server and augment the obtained resources using resourceswithin the second web server to generate a response to the clientrequest.
 2. The system of claim 1 wherein the first web server islocated at a web site hosting center and implements multiple web sites.3. The system of claim 1 wherein the second web server furthercomprises: means for detecting a busy condition in the first web server;and means for substituting resources within the second web server forthe resources within the first web server when the busy condition isdetected.
 4. The system of claim 3 wherein the substituted resourcescomprise a redeemable coupon.
 5. The system of claim 1 wherein thesecond web server further comprises: means for detecting a condition inwhich the first web server is unavailable; and means for substitutingresources within the second web server for the specified resources whenthe first web server is unavailable.
 6. The system of claim 5 whereinthe substituted resources comprise a redeemable coupon.
 7. A method forserving web pages to a client in response to a client request specifyinga network resource, the method comprising: providing an originating webserver upon which the requested resource resides, the originating webserver having a request interface for receiving requests and a responseinterface for sending responses to the requests; providing a front-endserver; redirecting a client request addressed to the originating webserver to the front-end server; using the front-end server to obtain atleast some of the request-specified resources from the originating webserver; augmenting the obtained resources using resources within thefront-end server to generate a response to the client request; andcommunicating the augmented response from the front-end server to theclient.
 8. A web site comprising: an originating web server coupled tothe network and executing software to access a first set of content andfunctionality in response to requests from a web client; a front-endserver coupled to the network and executing software to access a secondset of content and functionality in response to requests from the webclient; a first communication channel supporting request and responsecommunication between the web client and the front-end server; a secondcommunication channel supporting communication between the front-endserver and the originating web server; and means operating cooperativelybetween the originating web server and the front-end server forreceiving requests for web pages from the web client and serving webpages to the requesting web client in response to the received requests.9. The web site of claim 8 further comprising means for directingrequest and response traffic from the first channel to the secondchannel.
 10. A system for serving content from a plurality of networkresources comprising: a first server that is an originating web serverfor a first set of resources; a second server that is an originating webserver for a second set of resources; a request interface within thefirst server for receiving requests specifying the first server, thefirst server responding to the request by generating a response usingthe first set of resources and generating a request to the second serverin order to use the second set of resources when generating theresponse; and a request interface within the second server for receivingrequests specifying the second server, the second server responding tothe request by generating a response using the second set of resourcesand generating a request to the first server in order to use the secondset of resources when generating the response.
 11. The system of claim10 wherein the first and second set are not mutually exclusive.
 12. Thesystem of claim 10 wherein the first and second sets are mutuallyexclusive.
 13. A method for serving content from a plurality of serverscomprising: generating a request for content, the request beingassociated with a specified address; providing a server having theaddress specified in the request; directing the request to the serverhaving the specified address and having at least a portion of thenetwork resources specified in the request; causing the server to servea first portion of the request from the server itself; and causing theserver to serve a second portion of the request from a second tier webserver.
 14. A system for serving content from a plurality of networkresources comprising: a first web server comprising a first set ofresources and coupled to serve requests received from a first pluralityof network appliances by accessing the first set of resources inresponse to requests generated by the first plurality of networkappliance; a second web server comprising a second set of resources andcoupled to serve requests from a second plurality of network appliancesby accessing the second set of resources in response to requestsgenerated by the second plurality of network appliances; and acommunication channel between the first and second web servers such thata request received on the first web server for content of the second webserver are served by causing the first web server to access the secondweb server to obtain the content and servicing the request from thefirst web server.
 15. The system of claim 14 wherein requests receivedon the second web server for content of the first web server are servedby causing the second web server to access the first web server toobtain the content and servicing the request from the second web serverto obtain content from content source, the originating web server havinga request interface for receiving requests from a network and a responseinterface for sending responses to the requests.
 16. The system of claim14 wherein the first tier web server fetches content from the secondtier web server and serves the fetched content such that it is theoriginating server for the fetched content.
 17. A system for serving webpages to a network client comprising: a network; an origin web servercoupled to the network; a client coupled to the network and generatingrequests directed to the origin web server; a gateway machine incommunication with the client, the gateway machine configured to receiverequests from the client, obtain web pages from the origin web server inresponse to the received request, and serve the obtained pages to theclient; means for detecting a busy condition in the origin server; meansresponsive to the busy condition for serving a page generated by thegateway machine in response to the client request.
 18. The system ofclaim 17 wherein the gateway machine comprises web server softwarecapable of generating static and dynamic web pages.
 19. The system ofclaim 17 wherein the means for serving substitute pages places thegateway machine in a role of the origin server.
 20. A method for servingweb pages to a network client comprising: generating requests from thenetwork client, the requests specifying a network resource that isconfigured to generate a desired web page; routing the requests througha gateway machine that maintains a connection with the network resource;detecting a busy condition in the network resource; and serving analternate page from the gateway machine to the network client inresponse to detecting a busy condition.
 21. A system for serving webpages to a network client comprising: a network; an origin web servercoupled to the network; a client coupled to the network; a gatewaymachine in communication with the client, the gateway machine configuredto receive requests from the client, obtain web pages from the originweb server in response to the received request, and serve the obtainedpages to the client; means for detecting when the origin server becomesunavailable; and means responsive to origin server becoming unavailablefor serving an alternate page from the gateway machine to the client.22. A system for caching network resources comprising: an origin webserver operable to provide responses containing network resources inresponse to requests for the contained resources; an first intermediaryserver having a cache therein and coupled to receive the responses andto receive the requests for network resources; mechanisms within thefirst intermediary server for determining whether the requested networkresources are within the cache; and mechanisms within the firstintermediary server for serving the requested network resources from thecache when requested network resources are within the cache.
 23. Thesystem of claim 22 wherein the network resources are associated with apriority value and the cache comprises a priority sensitive cache thatselectively stores the network resources in the cache based at least inpart on the associated priority.
 24. The system of claim 22 furthercomprising a second intermediary server having a cache therein, thesecond intermediary server being coupled to coupled to receive theresponses and to receive the requests for network resources.
 25. Thesystem of claim 24 further comprising a communication channel couplingthe first intermediary server and the second intermediary server. 26.The system of claim 25 wherein the network resources are associated witha priority value and the communication channel is responsive to thepriority value to regulate the manner in which data is communicatedbetween the first intermediary server and the second intermediaryserver.
 27. The system of claim 22 wherein the cache comprises a passivecache that caches network resources as they pass through theintermediary server.
 28. The system of claim 22 wherein the cachecomprises an active cache that caches network resources in response toencoded instructions within the network resource.
 29. The system ofclaim 22 wherein the cache comprises an active cache that caches networkresources in anticipation of requests for the network resource.
 30. Thesystem of claim 22 wherein the cache comprises an active cache thatcaches network resources in response to instructions from anotherintermediary server.
 31. The system of claim 22 wherein the intermediaryserver comprises a front-end server located on a client-side of anetwork.
 32. The system of claim 22 wherein the intermediary servercomprises a back-end server located on an originating server-side of anetwork.
 33. The system of claim 22 wherein the intermediary servercomprises: a front-end computer having a cache therein and located on aclient-side of a network; and a back-end server having a cache thereinlocated on an originating server-side of a network.
 34. A method forserving web pages in response to requests from a network client, whereinthe requests specify content desired by the user of the network client,the method comprising: providing a gateway server configured to receiverequests specifying content; providing a plurality of network servers,at least one of the network servers housing the specified content, andat least one of the network servers housing alternative content; inresponse to a received request, generating requests in the gatewayserver to at least one of the network servers; in response to therequest received from the gateway server, generating requests in the atleast one network server to at least one other network server; serving aresponse from the gateway server, wherein the response includes contentselected from the group consisting of specified content from the gatewayserver, specified content from one of the network servers, specifiedcontent from an origin server, alternate content from the gatewayserver, and alternate content from one of the network servers.
 35. Themethod of claim 34 further comprising the act of routing the requests toa gateway server.
 36. The method of claim 34 wherein the selection ofcontent included in the response from the gateway server is selected bythe gateway server.
 37. The method of claim 34 wherein the selection ofcontent included in the response from the gateway server is selected byone of the network servers.
 38. The method of claim 34 wherein theresponse from the gateway server comprises at least two portionsselected from the group consisting of specified content from the gatewayserver, specified content from one of the network servers, specifiedcontent from an origin server, alternate content from the gatewayserver, and alternate content from one of the network servers.